<?php
namespace Admin\Controller;

class RoleController extends AdminController{

	private $_model=null;   //角色表操作对象
	private $_node=null;		//权限表操作对象
	private $_role_nodel=null;	//角色权限表
	private $_user_role=null;	//用户角色表

	public function __construct(){
		parent::__construct();
		$this->_model=D('Role');
		$this->_node=D('node');
		$this->_role_nodel=D('role_node');
		$this->_user_role=D('user_role');
	}
	public function index(){

		//先查出角色信息，在查出权限id,查出权限名字然后加在数组里
		$list=$this->_model->select();
		$arr=array();
		foreach($list as $v){
			//查出每一个角色对应的权限id 结果是个数组
			$node_id=$this->_role_nodel->where(array('rid'=>array('eq',$v['id'])))->select();
			//根据权限id查出权限名字
			$node = array();
			foreach($node_id as $value){
				$node[]=$this->_node->where(array('id'=>array('eq',$value['nid'])))->getField('name');
			}
			//查出的名字构成一个数组，将数组作为$v的元素
			$v['node'] = $node;
			$arr[] = $v;
		}
		//分配变量
		$this->assign('list',$arr);
		//加载模板
		$this->display();
	}
	public function add(){
		$this->display();
	}
	public function doadd(){
		if(!$this->_model->create()){
			$this->error($this->_model->getError());
			eixt;
		}
		if($this->_model->add()>0){
			$this->success("添加成功",U('Role/index'));
		}else{
			$this->error("添加失败");
		}
	}
	public function del(){
		$id=I('id/d',0);
		//删除角色，要删除角色表，用户角色表，角色权限表
		if($this->_model->delete($id)>0 && $this->_role_nodel->where(array('rid'=>$id))->delete()>=0 && $this->_user_role->where(array('rid'=>$id))->delete()>=0){
			$this->success('删除成功',U('Role/index'));
		}else{
			$this->error('删除失败');
		}
	}
	public function edit(){
		//查出数据
		$id=I('id/d',0);
		$vo=$this->_model->where(array('id'=>$id))->find();
		//分配数据
		$this->assign("vo",$vo);
		//加载模版
		$this->display();
	}
	//执行修改操作
	public function save(){
		//初始化
		if(!$this->_model->create()){
			$this->error($this->_model->getError());
			exit;
		}
		//执行修改 
		if($this->_model->save() >= 0){
			$this->success("修改成功！",U('Role/index'));
		}else{
			$this->error("修改失败");
		}
	}
	//遍历角色权限信息
	public function nodelist(){
		//查找该角色信息(要名字)
		$role = $this->_model->where(array('id'=>array('eq',I('id'))))->find();
		//查找所有的节点
		$nodes = $this->_node->select();
		//获取该角色的权限
		$ro_node = $this->_role_nodel->where(array('rid'=>array('eq',$role['id'])))->select();
		$ro_nodes = array();
		//遍历重组数组
		foreach($ro_node as $v){
			$ro_nodes[] = $v['nid'];
		}
		//向模板分配该用户拥有的权限信息
		$this->assign('ro_nodes',$ro_nodes);
		//向模板分配节点信息
		$this->assign('nodes',$nodes);
		//向模板分配角色信息ec\\
		$this->assign('role',$role);
		//加载模板
		$this->display();
	}
	//为角色添加权限
	public function savenode(){
		if(empty($_POST['node'])){
			$this->error("必须选择一个角色！");
		}
		$rid = $_POST['rid'];
		//删除该 角色的 所有信息--避免重复添加
		$this->_role_nodel->where(array('rid'=>array('eq',$rid)))->delete();
		//循环添加
		foreach($_POST['node'] as $v){
			$data['nid'] = $v;
			$data['rid'] = $rid;
			//执行添加
			$this->_role_nodel->data($data)->add();
		}
		$this->success("添加成功！",U('Role/index'));
	}

}
